#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 绘制折线图
import matplotlib.pyplot as plt # pyplot包含用于生成图表的函数.

"""
squares = [1,4,9,16,25] #使用平方数序列1,4,9,16和25绘制图表.
plt.plot(squares)
plt.show()  # 打开matplotlib查看器,并显示绘制的图形.
"""


# 修改标签文字和线条粗细
"""
squares = [1,4,9,16,25]
# linewidth决定了plot绘制线条的粗细.
plt.plot(squares,linewidth=5)

# 设置图表标题,并给坐标轴加上标签. fontsize指定图表中文字的大小.
plt.title("Square Numbers",fontsize=24) 
plt.xlabel("Value",fontsize=14) # xlabel和ylabel为每条轴设置标题.
plt.ylabel("Square of Value",fontsize=14)

# 设置刻度标记的大小
plt.tick_params(axis='both',labelsize=14) # 设置刻度的样式. 并将刻度标记的字号设置为14.
plt.show()
"""


# 校正图形
"""
input_values = [1,2,3,4,5]
squares = [1,4,9,16,25]
plt.plot(input_values,squares,linewidth=5)
plt.show()
"""


# 使用scatter()绘制散点图并设置其样式
# 要绘制单个点,可使用scatter(),并向它传递一对x和y坐标,它将在指定位置绘制一个点:
"""
# plt.scatter(2,4)
# plt.show()

# 设置输出的样式,添加标题,给轴加上标签.
plt.scatter(2,4,s=200) #使用实参s设置了绘制图形时使用的点的尺寸.
# 设置图表标题并给坐标轴加上标签.
plt.title("Square Numbers",fontsize=24)
plt.xlabel("Value",fontsize=14)
plt.ylabel("Square of Values",fontsize=14)

# 设置刻度标记的大小
plt.tick_params(axis='both',which='major',labelsize=14)
plt.show()
"""

# 使用scatter()绘制一系列点
# 要绘制一系列的点,可向scatter()传递两个分别包含x值和y值的列表.
"""
x_values = [1,2,3,4,5] #包含要计算其平方值的数字.
y_values = [1,4,9,16,25] #包含前述每个数字的平方值.
plt.scatter(x_values,y_values,s=100) # matplotlib依次从每个列表中读取一个值来绘制一个点.
plt.show()  # 要绘制的点的坐标分别为:(1,1),(2,4),(3,9)
"""


# 自动计算数据
"""
x_values = list(range(1,100))
y_values = [x**2 for x in x_values]
plt.scatter(x_values,y_values,s=40)

# 设置每个坐标轴的取值范围
# 函数axis要求提供四个值: x和y坐标轴的最小值和最大值.
plt.axis([0,1100,0,1100000]) # axis指定了每个坐标轴的取值范围.
plt.show()
"""


# 删除数据点的轮廓
"""
x_values = list(range(1,100))
y_values = [x**2 for x in x_values]
plt.scatter(x_values,y_values,edgecolor='none',s=40)
plt.show()
"""

# 自定义颜色
# 修改数据点的颜色,可向scatter()传递参数c,并将其设置为要使用的颜色的名称
"""
x_values = list(range(1,100))
y_values = [x**2 for x in x_values]
plt.scatter(x_values,y_values,c='red',edgecolor='none',s=40)
plt.show()
"""
# 使用RGB颜色模式自定义颜色,要指定自定义颜色,可传递参数c,并将其设置为一个元组,其中包含三个0~1之间的小数值.
"""
x_values = list(range(1,100))
y_values = [x**2 for x in x_values]
# 值越接近0,指定的颜色越深,值越接近1,指定的颜色越浅.
plt.scatter(x_values,y_values,c=(0,0,0.8),edgecolor='none',s=40)
plt.show()
"""

# 使用颜色映射
'''
颜色映射是一系列颜色,从起始颜色渐变到结束颜色. 在可视化中,颜色映射用于突出数据的规律.
模块pyplot内置了一组颜色映射.
'''
"""
x_values = list(range(1001))
y_values = [x**2 for x in x_values]
plt.scatter(x_values,y_values,c=y_values,cmap=plt.cm.Blues,edgecolor='none',s=40)
# 将参数c设置成了y值列表,使用参数cmap告诉pyplot使用哪个颜色映射. 
# 将y值较小的点显示为浅蓝色,将y值较大的点显示为深蓝色.
# plt.show()

# 自动保存图表.
# plt.savefig('./images/squares_plot.png',bbox_inches='tight')
# 第一个实参指定以文件名保存图表,第二个实参指定将图表中多余的空白区域剪掉.
# plt.savefig('squares_plot.png')  保存失败.
"""






